// Bertels Nick c1019387

package core.logic.dataAccess;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import core.logic.services.utilServices.ConnectionService;
import core.models.dataModels.searchModels.ZoekGegVoorBookingModel;
import core.models.domainModel.Personeel;
import core.models.domainModel.Vlucht;

public class Personeel_VluchtDAO {


	public static int insertPersoneelIntoVlucht(ArrayList<Personeel> pList,int vluchtId) // @Author:
	// Nick
	// Bertels
		{
		int ok = 0;
		for (Personeel p : pList) 
			{
			String sql = "INSERT INTO Personeel_Vlucht (PersoneelId, VluchtId) VALUES (?,?)";
			
			Connection con;
			
			try {
			con = ConnectionService.getConnection();
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setInt(1, p.get_personeelId());
			pst.setInt(2, vluchtId);

			ok = pst.executeUpdate();
			pst.close();
			} catch (SQLException ex) 
			{
			ex.printStackTrace();
			}
		}
	return ok;
	}

	
	//c1025696 pieter gielen 
	public static ArrayList<Integer> AantalBemanning(ZoekGegVoorBookingModel model)
	{
		ArrayList<Integer> cvAantalBemanning = new ArrayList<Integer>();
		
		
		//enkel de gegevens ophalen waarvan de datum "" (leeg) is, of NULL en die op een bepaalde vlucht zit
		String sql =  
		" SELECT        dbo.Vlucht.VluchtId, dbo.Vlucht.VliegtuigId, dbo.Vliegtuig.VliegtuigId AS Expr1, dbo.Vliegtuig.aantalPilotenNodig, dbo.Vliegtuig.aantalStewardsNodig "+
		" FROM         dbo.Vliegtuig "+
					   "INNER JOIN " +
					   	" dbo.Vlucht ON dbo.Vliegtuig.VliegtuigId = dbo.Vlucht.VliegtuigId "+
		" WHERE        (dbo.Vlucht.VluchtId = ?) ";	

		try{
			

			PreparedStatement preparedStatement = ConnectionService.getConnection().prepareStatement(sql);
			preparedStatement.setInt(1, ((Vlucht) model.enkeleVlucht).getVluchtId());
			
			
			ResultSet rs = preparedStatement.executeQuery();
			
			//alle regels een voor een inlezen
			while(rs.next())
			{	
				//aantal piloten eerst 
				cvAantalBemanning.add(rs.getInt("aantalPilotenNodig"));
				
				//aantal stewards 2de
				cvAantalBemanning.add(rs.getInt("aantalStewardsNodig"));
				
			
			}
		}
		catch(SQLException ex){
			JOptionPane.showMessageDialog(null, ex.getMessage());
		}
		
		return cvAantalBemanning;
		
	}
	
	//c1025696 pieter gielen 
	
	public static ArrayList<Personeel> getPersoneelByVluchtID(int vluchtID)
	{
		ArrayList<Personeel> lijstPersoneel = new ArrayList<Personeel>();
		
		//enkel de gegevens ophalen waarvan de datum "" (leeg) is, of NULL
		String sql = "SELECT dbo.Personeel.PersoneelId " 
		            +"FROM dbo.Personeel INNER JOIN dbo.Personeel_Vlucht ON dbo.Personeel.PersoneelId = dbo.Personeel_Vlucht.PersoneelId "
				    +"WHERE dbo.Personeel_Vlucht.VluchtId=? and (dbo.Personeel.Einddatum IS NULL OR dbo.Personeel.Einddatum = '')";
		
		
		
		try{		
			PreparedStatement statement = ConnectionService.getConnection().prepareStatement(sql);
			statement.setInt(1, vluchtID);
			ResultSet rs = statement.executeQuery();
			
			
			
			//alle regels een voor een inlezen
			while(rs.next())
			{	

				Personeel p = PersoneelDAO.getPersoneelByID(rs.getInt("PersoneelId"));
				
				lijstPersoneel.add(p);				
			}
			statement.close();
		}
		catch(SQLException ex){
			JOptionPane.showMessageDialog(null, ex.getMessage());
			ex.printStackTrace();
		}
		return lijstPersoneel;
	}
	
	
	
	
	
}
